PlantUML Hitchhiker

PlantUML Stdlib Overview

See githubfilefinder-label for a handy hint on searching for icons.

PlantUML Standard Library Overview

This overview is at May 2020.

PlantUML Standard Library includes several icon libraries from different sources (including myself) and they are varied in functionality and how to use them.

The most recent addition is https://github.com/awslabs/aws-icons-for-plantuml.

https://github.com/awslabs/aws-icons-for-plantuml (Amazon) builds on the work of https://github.com/RicardoNiepel (MicroSoft):

  1. https://github.com/RicardoNiepel/Azure-PlantUML

  2. https://github.com/RicardoNiepel/C4-PlantUML which builds on https://c4model.com/

    These in turn build on

    1. https://github.com/milo-minderbinder/AWS-PlantUML
    2. https://github.com/Roemer/plantuml-office

    There are now 2 AWS icon sets in PlantUML Stdlib:

Broadly, the main groupings (based on macro definition) are per diagram. Osa and Elastic are based on aws.

Type 1 (e_type,e_color,e_sprite,label,alias,e_stereo)

AWS is one of the original stdlib entries - it's from 2017. Some libraries, listed below, followed the same layout, or used the same tools to create the sprites.

https://github.com/plantuml/plantuml-stdlib/blob/master/aws/AI/AmazonLex/ contains 4 files:

  • AmazonLex-sprite.puml 68x72/16 sprite
  • AmazonLex.puml same as AmazonLex-sprite.puml but with macros
  • AmazonLex_LARGE-sprite.puml 340x360/16
  • AmazonLex_LARGE.puml same as AmazonLex_LARGE-sprite.puml but with macros

The macros look like:

    !define AMAZONLEX(alias) PUML_ENTITY(component,#2F74B8,AmazonLex,alias,AmazonLex)

    !definelong AMAZONLEX(alias,label,e_type="component",e_color="#2F74B8",e_stereo="AmazonLex",e_sprite="AmazonLex")
    PUML_ENTITY(e_type,e_color,e_sprite,label,alias,e_stereo)
    !enddefinelong

osa

https://github.com/plantuml/plantuml-stdlib/blob/master/osa

    !define LEFT(alias) PUML_ENTITY(component,black,left,alias,left)

    !definelong LEFT(alias,label,e_type="component",e_color="black",e_stereo="left",e_sprite="left")
    PUML_ENTITY(e_type,e_color,e_sprite,label,alias,e_stereo)
    !enddefinelong

elastic

https://github.com/plantuml/plantuml-stdlib/blob/master/osa

    !define APM(alias) PUML_ENTITY(agent,00BFB3,apm,alias,apm)

    !definelong APM(alias,label,e_type="agent",e_color="00BFB3",e_stereo="apm",e_sprite="apm")
    PUML_ENTITY(e_type,e_color,e_sprite,label,alias,e_stereo)
    !enddefinelong

Type 2 (e_alias, e_label, e_techn, e_descr)

Below shows what the macros look like for each icon

azure

https://github.com/plantuml/plantuml-stdlib/blob/master/azure/AIMachineLearning/AzureBatchAI.puml

AzureEntityColoring(AzureBatchAI)
!define AzureBatchAI(e_alias, e_label, e_techn) AzureEntity(e_alias, e_label, e_techn, AZURE_SYMBOL_COLOR, AzureBatchAI, AzureBatchAI)
!define AzureBatchAI(e_alias, e_label, e_techn, e_descr) AzureEntity(e_alias, e_label, e_techn, e_descr, AZURE_SYMBOL_COLOR, AzureBatchAI, AzureBatchAI)

awslib

https://github.com/plantuml/plantuml-stdlib/blob/master/awslib/ARVR/ARVR.puml

AWSEntityColoring(ARVR)
!define ARVR(e_alias, e_label, e_techn) AWSEntity(e_alias, e_label, e_techn, #CC2264, ARVR, ARVR)
!define ARVR(e_alias, e_label, e_techn, e_descr) AWSEntity(e_alias, e_label, e_techn, e_descr, #CC2264, ARVR, ARVR)
!define ARVRParticipant(p_alias, p_label, p_techn) AWSParticipant(p_alias, p_label, p_techn, #CC2264, ARVR, ARVR)
!define ARVRParticipant(p_alias, p_label, p_techn, p_descr) AWSParticipant(p_alias, p_label, p_techn, p_descr, #CC2264, ARVR, ARVR)

The BatchParticipant part supports adding icons to sequence diagrams i.e.

!define BatchParticipant(p_alias, p_label, p_techn) AWSParticipant(p_alias, p_label, p_techn, #D86613, Batch, Batch)

Type 3 (_alias, _label, _shape, _color)

office

https://github.com/plantuml/plantuml-stdlib/blob/master/office/Clouds/azure.puml

!define OFF_AZURE(_alias) ENTITY(rectangle,black,azure,_alias,OFF AZURE)
!define OFF_AZURE(_alias,_label) ENTITY(rectangle,black,azure,_label,_alias,OFF AZURE)
!define OFF_AZURE(_alias,_label,_shape) ENTITY(_shape,black,azure,_label,_alias,OFF AZURE)
!define OFF_AZURE(_alias,_label,_shape,_color) ENTITY(_shape,_color,azure,_label,_alias,OFF AZURE)

cloudogu

https://github.com/plantuml/plantuml-stdlib/blob/master/cloudogu/tools/ansible.puml
!define TOOL_ANSIBLE(_alias) ENTITY(rectangle,black,ansible,_alias,TOOL ANSIBLE)
!define TOOL_ANSIBLE(_alias, _label) ENTITY(rectangle,black,ansible,_label, _alias,TOOL ANSIBLE)
!define TOOL_ANSIBLE(_alias, _label, _shape) ENTITY(_shape,black,ansible,_label, _alias,TOOL ANSIBLE)
!define TOOL_ANSIBLE(_alias, _label, _shape, _color) ENTITY(_shape,_color,ansible,_label, _alias,TOOL ANSIBLE)
skinparam folderBackgroundColor<<TOOL ANSIBLE>> White
@enduml

tupadr3

https://github.com/plantuml/plantuml-stdlib/blob/master/tupadr3/devicons/android.puml
!define DEV_ANDROID(_alias) ENTITY(rectangle,black,android,_alias,DEV ANDROID)
!define DEV_ANDROID(_alias, _label) ENTITY(rectangle,black,android,_label, _alias,DEV ANDROID)
!define DEV_ANDROID(_alias, _label, _shape) ENTITY(_shape,black,android,_label, _alias,DEV ANDROID)
!define DEV_ANDROID(_alias, _label, _shape, _color) ENTITY(_shape,_color,android,_label, _alias,DEV ANDROID)
skinparam folderBackgroundColor<<DEV ANDROID>> White
@enduml

Type 4 (_color, _scale, _alias, _shape, _label)

material

https://github.com/plantuml/plantuml-stdlib/blob/master/material/access_point.

1153 files (not in categorised folders)
!define MA_ACCESS_POINT(_color)                                 SPRITE_PUT(                                   ma_access_point, _color)
!define MA_ACCESS_POINT(_color, _scale)                         SPRITE_PUT(                                   ma_access_point, _color, _scale)
!define MA_ACCESS_POINT(_color, _scale, _alias)                 SPRITE_ENT(  _alias, MA ACCESS_POINT,         ma_access_point, _color, _scale)
!define MA_ACCESS_POINT(_color, _scale, _alias, _shape)         SPRITE_ENT(  _alias, MA ACCESS_POINT,         ma_access_point, _color, _scale, _shape)
!define MA_ACCESS_POINT(_color, _scale, _alias, _shape, _label) SPRITE_ENT_L(_alias, MA ACCESS_POINT, _label, ma_access_point, _color, _scale, _shape)
skinparam folderBackgroundColor<<MA ACCESS_POINT>> White

No Macros

The following macros are sprites only with no macros.

logos

https://github.com/plantuml/plantuml-stdlib/blob/master/logos/100tb.puml

This one includes sprites only.

cloudinsight

https://github.com/plantuml/plantuml-stdlib/tree/master/cloudinsight

This one includes sprites only.

kubernetes

https://github.com/plantuml/plantuml-stdlib/blob/master/kubernetes

This does include a https://github.com/plantuml/plantuml-stdlib/blob/master/kubernetes/k8s-skinparam.puml

Icons are grouped into a file based on resolutions and labels

  • Different resolutions 64x63/16z, 128x125/16z, 256x249/16z]
  • labeled or unlabeled

Superset Of Parameters

The superset of parameters in macros:

  • sprite
  • color
  • scale (material library only)
  • shape (Type 1 (e_type), 4 (_shape))
  • technology
  • description
  • label

These Text attributes are not parameters:

  • Text Size: where text size does vary in some libraries
  • Number of Individual Text fields
  • Order of Individual Text fields
Brodocs